package com.cxhd.lis.ws;

//package com.baseWebSocket;
//
//
//
//
//import org.jboss.netty.buffer.ChannelBuffers;
//import org.jboss.netty.channel.ChannelFuture;
//import org.jboss.netty.channel.ChannelFutureListener;
//import org.jboss.netty.channel.ChannelHandlerContext;
//import org.jboss.netty.channel.ExceptionEvent;
//import org.jboss.netty.channel.MessageEvent;
//import org.jboss.netty.channel.SimpleChannelUpstreamHandler;
//import org.jboss.netty.handler.codec.http.DefaultHttpResponse;
//import org.jboss.netty.handler.codec.http.HttpHeaders;
//import static org.jboss.netty.handler.codec.http.HttpHeaders.*;
//
//import org.jboss.netty.handler.codec.http.HttpRequest;
//import org.jboss.netty.handler.codec.http.HttpResponse;
//import static org.jboss.netty.handler.codec.http.HttpResponseStatus.*;
//import static org.jboss.netty.handler.codec.http.HttpVersion.*;
//
//
//import org.jboss.netty.handler.codec.http.websocketx.CloseWebSocketFrame;
//import org.jboss.netty.handler.codec.http.websocketx.PingWebSocketFrame;
//import org.jboss.netty.handler.codec.http.websocketx.PongWebSocketFrame;
//import org.jboss.netty.handler.codec.http.websocketx.TextWebSocketFrame;
//import org.jboss.netty.handler.codec.http.websocketx.WebSocketFrame;
//import org.jboss.netty.handler.codec.http.websocketx.WebSocketServerHandshaker;
//import org.jboss.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory;
//import org.jboss.netty.logging.InternalLogger;
//import org.jboss.netty.logging.InternalLoggerFactory;
//import org.jboss.netty.util.CharsetUtil;
//
//public class WebSocketServerHandler extends SimpleChannelUpstreamHandler {
//
//    private static final InternalLogger logger = InternalLoggerFactory
//            .getInstance(WebSocketServerHandler.class);
//   
//
//    private static final String WEBSOCKET_PATH = "/websocket";
//
//    private WebSocketServerHandshaker handshaker;
//   
//
//   public BaseServer server;
//
//    String data, name, user, password;
//
////    public static DBDao dbdao = null;
////    public static String serverName = null;
////    public static String masterServer = null;
//  
//
//    public ChannelHandlerContext temCon;
//
//    WebSocketServerHandler(BaseServer server) {
//        this.server=server;
//         }
//
//  
//
//    @Override
//    public void messageReceived(ChannelHandlerContext ctx, MessageEvent e)
//            throws Exception {
//        // 处理接受消息  
//        Object msg = e.getMessage();
//        if (msg instanceof HttpRequest) {
//
//            handleHttpRequest(ctx, (HttpRequest) msg);
//        } else if (msg instanceof WebSocketFrame) {
//
//            handleWebSocketFrame(ctx, (WebSocketFrame) msg);
//        }
//    }
//
//    @Override
//    public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e)
//            throws Exception {
//        // 处理异常情况  
//        onClose(ctx);
//       // e.getCause().printStackTrace();
//        e.getChannel().close();
//    }
//
//    private void handleHttpRequest(ChannelHandlerContext ctx, HttpRequest req)
//            throws Exception {
//        // 只接受 HTTP GET 请求  
////        if (req.getMethod() != GET) {
////            postMethond(ctx, req);
////            return;
//////            sendHttpResponse(ctx, req, new DefaultHttpResponse(HTTP_1_1,
//////                    FORBIDDEN));
////           // return;
////        }
//        // Send the demo page and favicon.ico  
//        if (req.getUri().equals("/")) {
//            HttpResponse res = new DefaultHttpResponse(HTTP_1_1, OK);
//
//          
//
//            sendHttpResponse(ctx, req, res);
//            return;
//        } 
//        else if (req.getUri().equals("/favicon.ico")) {
//            HttpResponse res = new DefaultHttpResponse(HTTP_1_1, NOT_FOUND);
//            sendHttpResponse(ctx, req, res);
//            return;
//        }
//
//        // Websocket 握手开始  
//        WebSocketServerHandshakerFactory wsFactory = new WebSocketServerHandshakerFactory(
//                getWebSocketLocation(req), null, false);
//        handshaker = wsFactory.newHandshaker(req);
//        if (handshaker == null) {
//            wsFactory.sendUnsupportedWebSocketVersionResponse(ctx.getChannel());
//        } else {
//            handshaker.handshake(ctx.getChannel(), req).addListener(
//                    WebSocketServerHandshaker.HANDSHAKE_LISTENER);
//        }
//        onOpen(ctx, req);
//        // ctx.getChannel().write(new TextWebSocketFrame("333333333333333333333333"));
//    }
//
//    private void handleWebSocketFrame(ChannelHandlerContext ctx,
//            WebSocketFrame frame) {
//
//        // Websocket 握手结束  
//        if (frame instanceof CloseWebSocketFrame) {
//            onClose(ctx);
//            // ctx.
//            handshaker.close(ctx.getChannel(), (CloseWebSocketFrame) frame);
//
//            return;
//        } else if (frame instanceof PingWebSocketFrame) {
//            System.out.println("ping-----------------");
//            ctx.getChannel().write(new PongWebSocketFrame(frame.getBinaryData()));
//            return;
//        } else if (!(frame instanceof TextWebSocketFrame)) {
//            throw new UnsupportedOperationException(String.format("%s frame types not supported",
//                    frame.getClass().getName()));
//        }
//
//        // 处理接受到的数据（转成大写）并返回  
//        String request = ((TextWebSocketFrame) frame).getText();
//        onMessage(ctx, request);
////        if (logger.isDebugEnabled()) {
////            logger.debug(String.format("Channel %s received %s", ctx.getChannel().getId(), request));
////        }
////        ctx.getChannel().write(new TextWebSocketFrame(request.toUpperCase()));
//    }
//
//    public void sendHttp505(ChannelHandlerContext ctx,
//            HttpRequest req, HttpResponse re) {
//        HttpResponse  res =new DefaultHttpResponse(HTTP_1_1, NOT_FOUND);
//        res.setContent(ChannelBuffers.copiedBuffer("505", CharsetUtil.UTF_8));
//        setContentLength(res, res.getContent().readableBytes());
//        ChannelFuture f = ctx.getChannel().write(res);
//        // if (!isKeepAlive(req) || res.getStatus().getCode() != 200) {
//        f.addListener(ChannelFutureListener.CLOSE);
//
//    }
//
//    private static void sendHttpResponse(ChannelHandlerContext ctx,
//            HttpRequest req, HttpResponse res) {
//        // 返回 HTTP 错误页面  
//        System.out.println(req.getUri() + "  " + res.getStatus().getCode());
//        if (res.getStatus().getCode() != 200) {
//            res.setContent(ChannelBuffers.copiedBuffer(res.getStatus().toString(), CharsetUtil.UTF_8));
//            setContentLength(res, res.getContent().readableBytes());
//        }
//
//        // 发送返回信息并关闭连接  
//        ChannelFuture f = ctx.getChannel().write(res);
//        // if (!isKeepAlive(req) || res.getStatus().getCode() != 200) {
//        f.addListener(ChannelFutureListener.CLOSE);
//        //  }
//    }
//
//    private static String getWebSocketLocation(HttpRequest req) {
//        System.out.println(req.getUri());
//        return "ws://" + req.getHeader(HttpHeaders.Names.HOST) + WEBSOCKET_PATH;
//    }
//
//    public void onOpen(ChannelHandlerContext ctx, HttpRequest req) {
//       server.onOpen(ctx, req);
//        //ctx.getChannel().
//    }
//
//    public void onMessage(ChannelHandlerContext con, String message) {
//        server.onMessage(con, message);
//    }
//
//    public void onClose(ChannelHandlerContext con) {
//      server.onClose(con);
//        System.out.println(con.getName() + " left ");
//    }
//
//    public void onError() {
//    }
//
//   
//
//    
//
//   
//}
